/**
 * 日期处理工具函数 - 专为中国用户优化
 * 确保数据库中的日期字段格式正确，使用本地时区
 */

/**
 * 获取中国本地时间字符串
 * @param date 日期对象
 * @returns 本地时间字符串 YYYY-MM-DD HH:mm:ss
 */
function getLocalTimeString(date: Date): string {
  return date.toLocaleString('zh-CN', {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit',
    hour12: false
  }).replace(/\//g, '-')
}

/**
 * 规范化due_date字段，确保是有效的本地时间戳或null
 * @param dueDate 前端传入的due_date值
 * @returns 规范化后的本地时间字符串或null
 */
export function normalizeDueDate(dueDate: any): string | null {
  // 如果是null、undefined、空字符串，返回null
  if (!dueDate || dueDate === '' || dueDate === 'null' || dueDate === 'undefined') {
    return null
  }

  try {
    // 尝试解析为Date对象
    const date = new Date(dueDate)
    
    // 检查是否是有效日期
    if (isNaN(date.getTime())) {
      console.warn(`Invalid due_date format: ${dueDate}, setting to null`)
      return null
    }
    
    // 返回本地时间字符串格式
    return getLocalTimeString(date)
  } catch (error) {
    console.warn(`Error parsing due_date: ${dueDate}, setting to null`, error)
    return null
  }
}

/**
 * 规范化时间戳字段，确保是有效的本地时间戳
 * @param timestamp 时间戳值
 * @returns 规范化后的本地时间字符串
 */
export function normalizeTimestamp(timestamp: any): string {
  if (!timestamp) {
    return getLocalTimeString(new Date())
  }

  try {
    const date = new Date(timestamp)
    if (isNaN(date.getTime())) {
      return getLocalTimeString(new Date())
    }
    return getLocalTimeString(date)
  } catch (error) {
    return getLocalTimeString(new Date())
  }
}

/**
 * 验证日期字符串格式
 * @param dateString 日期字符串
 * @returns 是否为有效日期格式
 */
export function isValidDateString(dateString: any): boolean {
  if (!dateString || typeof dateString !== 'string') {
    return false
  }
  
  try {
    const date = new Date(dateString)
    return !isNaN(date.getTime())
  } catch {
    return false
  }
}
